In electronic circuits, the processing speed of microprocessors tends to be faster than the processing speed of the memory where a program is stored. Thus, the instructions for the program are read at a speed that is slower than the mircoprocessor speed and the microprocessor has to wait for the instructions to be read.
In an attempt to alleviate the wait situation, an instruction prefetch (e.g., a prefetch operation) can be used to speed up the amount of time (e.g., a wait state) needed to perform various operations (e.g., load programs, execute a program, and so on). During the prefetch operation, files expected to be needed for the various operations are cached in advance of when each file is expected to be used for the various operations.
The prefetch operation can occur when a processor requests an instruction from the main memory, which is before the processor needs the instruction. The prefetch operation can be performed because programs are usually executed sequentially and, thus, the instructions can be prefetched in the program order. When the pre-requested instruction (e.g., prefetched instruction) is received from the memory, the instruction is placed in a cache. When the processor is ready for the instruction, the processor can access the instruction from the cache. This process is quicker than what would occur if the processer requested the instruction only when the instruction is needed, which would result in high latency while waiting for the memory to return the instruction.
Prefetching has been performed by a memory controller based prefetcher of a computer system. Thus, the memory controller has to track the address-streams from all the processors in the system. When a new process is added to the system, the memory controller based prefetcher has to be updated. Further, if the memory controller based prefetcher is split into multiple instances, the address-stream tracking can be complicated and in some instances rendered unworkable.
The above-described deficiencies of conventional approaches to prefetch operations are merely intended to provide an overview of some of the problems of conventional approaches and techniques, and are not intended to be exhaustive. Other problems with conventional circuits and techniques, and corresponding benefits of the various non-limiting embodiments described herein may become further apparent upon review of the following description.